home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 026-050 / scopedisk33 / dutils / addcr.c < prev    next >
C/C++ Source or Header  |  1995-03-18  |  2KB  |  93 lines

  1. /*
  2.  *  ADDCR.C
  3.  *
  4.  *  ADDCR [-l] file1 file2 ... filen
  5.  *
  6.  *  -l = convert filenames to lower case on writeout.
  7.  */
  8.  
  9. #include <stdio.h>
  10.  
  11. extern char *malloc();
  12.  
  13. main(ac,av)
  14. char *av[];
  15. {
  16.     register short i;
  17.     FILE *fi;
  18.     long len;
  19.     char *buf;
  20.     char *wbuf;
  21.     char clower = 0;
  22.  
  23.     for (i = 1; i < ac; ++i) {
  24.     if (strcmp(av[i], "-l") == 0) {
  25.         clower = 1;
  26.         continue;
  27.     }
  28.     printf("%-20s ", av[i]);
  29.     fflush(stdout);
  30.     if ((fi = fopen(av[i], "r")) == NULL) {
  31.         perror(av[i]);
  32.         continue;
  33.     }
  34.     fseek(fi, 0, 2);
  35.     len = ftell(fi);
  36.     printf("%6ld ", len);
  37.     fflush(stdout);
  38.     if (len < 0 || (buf = malloc(len*3)) == NULL) {
  39.         puts("len < 0 or malloc failed");
  40.         fclose(fi);
  41.         continue;
  42.     }
  43.     fseek(fi, 0, 0);
  44.     if (fread(buf, len, 1, fi) != 1) {
  45.         puts("read failed");
  46.         goto done;
  47.     }
  48.     fclose(fi);
  49.     wbuf = buf + len;
  50.     len = addcr(buf, len);
  51.     if (clower) {
  52.         register char *ptr;
  53.         for (ptr = av[i]; *ptr; ++ptr) {
  54.         if (*ptr >= 'A' && *ptr <= 'Z')
  55.             *ptr |= 0x20;
  56.         }
  57.     }
  58.     if ((fi = fopen(av[i], "w")) == NULL) {
  59.         puts("Unable to open for write");
  60.         goto done;
  61.     }
  62.     printf("write ");
  63.     fflush(stdout);
  64.     if (fwrite(wbuf, len, 1, fi) != 1) {
  65.         puts("write failed");
  66.         goto done;
  67.     }
  68.     puts("ok");
  69. done:
  70.     fclose(fi);
  71.     free(buf);
  72.     }
  73. }
  74.  
  75. addcr(buf, len)
  76. register char *buf;
  77. register long len;
  78. {
  79.     register char *ptr = buf + len;
  80.     register long i, j;
  81.     for (i = j = 0; i < len; ++i) {
  82.     if (buf[i] == 13)
  83.         continue;
  84.     if (buf[i] != 10) {
  85.         ptr[j++] = buf[i];
  86.         continue;
  87.     }
  88.     ptr[j++] = 13;
  89.     ptr[j++] = 10;
  90.     }
  91.     return(j);
  92. }
  93.